home *** CD-ROM | disk | FTP | other *** search
/ Super CD / Super CD.iso / geomitri / rcd / contbeam.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1989-06-10  |  19.5 KB  |  487 lines

  1. 2       ' This programme is used to design  MULTI SPANS CONTIUOUS BEAMS
  2. 3       ' This programme uses Advanced Basic Language  (IBM - BASICA )
  3. 4       ' This programme is saved under the name     [ CONTBEAM ]
  4. 5       ' Prepared by   AMJAD J. SHAIR       23/2/1986 -
  5. 6  SCREEN 0,1 :WIDTH 40 :COLOR 15,1,0 :CLS :LOCATE 5
  6. 7  PRINT "       CONTINUOUS BEAM DESIGN                                                              PREPARED BY  :                                                               AMJAD JAMIL EL-SHAIR"
  7. 8  LOCATE 25,5 :PRINT "PRESS SPACE BAR TO CONTINUE ";
  8. 9  Y$=INKEY$ :IF Y$<>" " THEN 9
  9. 10  '-----------------------------------------------------------------Basic Data
  10. 20  WIDTH 80 :COLOR 15,1,0
  11. 30  CLEAR
  12. 40  OPEN "DATA1" FOR INPUT AS #1
  13. 50  IF EOF(1) THEN CLOSE :GOTO 80
  14. 60  INPUT #1,PRJ$,BLD$,DSR$,FC,FY,FYS,QA
  15. 70  GOTO 50
  16. 80  PSX(MAX.)=0.75*(4400/(FY+6090))*FC/FY        '  Max. Ratio of Reinf'
  17. 90  PS(MIN.)=14/FY
  18. 100  '------------------------------------------ Enter Cantilevers Spans & Loads
  19. 110  CLS :LOCATE 2,12
  20. 120  PRINT "******     CONTINUOUS BEAM DESIGN     ******"
  21. 125  PRINT
  22. 130  INPUT "     ENTER   BEAM FIRST SPAN NUMBER   ",NMB
  23. 135  IF NMB<=0 GOTO 150
  24. 140  PRINT
  25. 145  INPUT "     ENTER   BEAM  LAST SPAN NUMBER   ",NMBL1
  26. 148  IF NMBL1<NMB THEN NMBL=NMB ELSE NMBL=NMBL1
  27. 150  CLS :LOCATE 2,10 :COLOR 15,5
  28. 160  PRINT "  ****    CONTINUOUS BEAM DESIGN   *  B"NMB " - B"NMBL "   ****" TAB(70)""
  29. 170  PRINT
  30. 180  LOCATE ,10 :PRINT "       Concrete Crushing Strength  f'c ="FC"  kg/cm2" TAB(70)""
  31. 190  LOCATE ,10 :PRINT "       Reinf' Steel Yield Stress   fy  ="FY" kg/cm2" TAB(70)""
  32. 200  COLOR 15,1 :PRINT
  33. 210  IL=0 :LL=0 :WL=0 :RLC=0 :MLC=0
  34. 220  IR=0 :LR=0 :WR=0 :RRC=0 :MRC=0
  35. 230  PRINT "     DO YOU HAVE A  CANTILEVER  AT THE LEFT  END SUPPORT  (Y/N) ? ";
  36. 240  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 240
  37. 242  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 250
  38. 244  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :GOTO 570
  39. 250  PRINT
  40. 260  INPUT "     ENTER  SPAN LENGTH  OF LEFT CANTILEVER          L      (m) ",LL
  41. 270  IF LL>0 GOTO 320
  42. 280  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  43. 290  INPUT "    ****   INVALID ZERO SPAN LENGTH     RE-ENTER     L    ****  ",LL
  44. 300  COLOR ,1:PRINT
  45. 310  IF LL<=0 GOTO 390
  46. 320  INPUT "     ENTER  ULTIMATE  UNIFORM LOAD  INTENSITY        W  (ton/m) ",WL
  47. 330  IF WL>0 GOTO 420
  48. 340  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  49. 350  INPUT "    ****   INVALID ZERO UNIFORM LOAD    RE-ENTER     W    ****  ",WL
  50. 360  COLOR ,1:PRINT
  51. 370  IF WL>0 GOTO 420
  52. 380  LL=0
  53. 390  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  54. 400  PRINT "    ****    CANTILEVER AT LEFT  END  WILL BE NEGLECED     ****  "
  55. 410  COLOR ,1:PRINT :GOTO 570
  56. 420  RLC=WL*LL
  57. 430  MLC=-WL*LL^2/2
  58. 440  PRINT
  59. 450  PRINT "     DO YOU HAVE CONCENTRATED LOADS ON  LEFT CANTLV.      (Y/N) ? ";
  60. 460  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 460
  61. 462  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 470
  62. 464  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :GOTO 570
  63. 470  PRINT
  64. 480  INPUT "     ENTER  COCENTRATED LOAD VALUE                   F    (ton) ",FL(IL+1)
  65. 490  IF FL(IL+1) <= 0 GOTO 540
  66. 500  INPUT "     ENTER  DISTANCE OF THAT COCENT. LOAD  FROM FREE END    (m) ",XFL(IL+1)
  67. 502  IF XFL(IL+1)<LL GOTO 510
  68. 504  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  69. 505  INPUT "    ****   LOAD POSITION OUT OF SPAN    RE-ENTER          ****  ",XFL(IL+1)
  70. 506  COLOR ,1 :IF XFL(IL+1)<LL GOTO 510
  71. 507  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  72. 508  PRINT "    ****     THIS CONCENTRATED LOAD WILL BE NEGLECED      ****  "
  73. 509  COLOR ,1:PRINT :GOTO 550
  74. 510  IL=IL+1
  75. 520  RLC=RLC+FL(IL)
  76. 530  MLC=MLC-FL(IL)*(LL-XFL(IL))
  77. 540  PRINT
  78. 550  PRINT "     DO YOU HAVE MORE CONCENT. LOADS ON  LEFT CANTLV.     (Y/N) ? ";
  79. 560  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 560
  80. 562  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 470
  81. 564  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :GOTO 570
  82. 570  PRINT :PRINT "    ------------------------------------------------------------------- " :PRINT
  83. 580  PRINT "     DO YOU HAVE A  CANTILEVER  AT THE RIGHT END SUPPORT  (Y/N) ? ";
  84. 590  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 590
  85. 592  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 600
  86. 594  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :GOTO 920
  87. 600  PRINT
  88. 610  INPUT "     ENTER  SPAN LENGTH  OF RIGHT CANTILEVER         L      (m) ",LR
  89. 620  IF LR>0 GOTO 670
  90. 630  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  91. 640  INPUT "    ****   INVALID ZERO SPAN LENGTH     RE-ENTER     L    ****  ",LR
  92. 650  COLOR ,1:PRINT
  93. 660  IF LR<=0 GOTO 740
  94. 670  INPUT "     ENTER  ULTIMATE  UNIFORM LOAD  INTENSITY        W  (ton/m) ",WR
  95. 680  IF WR>0 GOTO 770
  96. 690  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  97. 700  INPUT "    ****   INVALID ZERO UNIFORM LOAD    RE-ENTER     W    ****  ",WR
  98. 710  COLOR ,1:PRINT
  99. 720  IF WR>0 GOTO 770
  100. 730  LR=0
  101. 740  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  102. 750  PRINT "    ****    CANTILEVER AT RIGHT END  WILL BE NEGLECED     ****  "
  103. 760  COLOR ,1:PRINT :GOTO 920
  104. 770  RRC=WR*LR
  105. 780  MRC=WR*LR^2/2
  106. 790  PRINT
  107. 800  PRINT "     DO YOU HAVE CONCENTRATED LOADS ON RIGHT CANTLV.      (Y/N) ? ";
  108. 810  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 810
  109. 812  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 820
  110. 814  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :GOTO 920
  111. 820  PRINT
  112. 830  INPUT "     ENTER  COCENTRATED LOAD VALUE                   F    (ton) ",FR(IR+1)
  113. 840  IF FR(IR+1) <= 0 GOTO 890
  114. 850  INPUT "     ENTER  DISTANCE OF THAT COCENT. LOAD  FROM FREE END    (m) ",XFR(IR+1)
  115. 852  IF XFR(IR+1)<LR GOTO 860
  116. 854  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  117. 855  INPUT "    ****   LOAD POSITION OUT OF SPAN    RE-ENTER          ****  ",XFR(IR+1)
  118. 856  COLOR ,1 :IF XFR(IR+1)<LR GOTO 860
  119. 857  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  120. 858  PRINT "    ****     THIS CONCENTRATED LOAD WILL BE NEGLECED      ****  "
  121. 859  COLOR ,1:PRINT :GOTO 900
  122. 860  IR=IR+1
  123. 870  RRC=RRC+FR(IR)
  124. 880  MRC=MRC+FR(IR)*(LR-XFR(IR))
  125. 890  PRINT
  126. 900  PRINT "     DO YOU HAVE MORE CONCENT. LOADS ON RIGHT CANTLV.     (Y/N) ? ";
  127. 910  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 910
  128. 912  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 820
  129. 914  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :GOTO 920
  130. 920  '----------------------------------------- Check Cantilever Spans & Loading
  131. 922  GOSUB 8500       'To display heading and data
  132. 924  PRINT "   **  CANTILEVER AT   LEFT END  ** "
  133. 926  PRINT "   ---------------------------------"
  134. 928  IF LL<=0 THEN PRINT "     NO CANTILEVER AT  LEFT END   " :PRINT :GOTO 940
  135. 930  PRINT "     SPAN LENGTH       L ="LL" meter "
  136. 932  PRINT "     UNIF. DIST. LOAD  W ="WL" ton/meter "
  137. 933  PRINT
  138. 934  IF IL<=0 GOTO 940
  139. 935   FOR I=1 TO IL
  140. 936  PRINT "     COCENTRATED LOAD  F"I"="FL(I)" ton    at "XFL(I)" meter   from free  Left End"
  141. 937  PRINT
  142. 938  NEXT I
  143. 940  PRINT "   **  CANTILEVER AT  RIGHT END  ** "
  144. 942  PRINT "   ---------------------------------"
  145. 944  IF LR<=0 THEN PRINT "     NO CANTILEVER AT RIGHT END   " :PRINT :GOTO 960
  146. 946  PRINT "     SPAN LENGTH       L ="LR" meter "
  147. 948  PRINT "     UNIF. DIST. LOAD  W ="WR" ton/meter "
  148. 950  PRINT
  149. 952  IF IR<=0 GOTO 960
  150. 954  FOR I=1 TO IR
  151. 955  PRINT "     COCENTRATED LOAD  F"I"="FR(I)" ton    at "XFR(I)" meter   from free Right End"
  152. 956  PRINT
  153. 957  NEXT I
  154. 960  PRINT :LOCATE 24,8 :COLOR 0,7
  155. 965  PRINT "   DO YOU WANT TO CHANGE THE ABOVE SHOWN DATA       (Y/N) ?   ";
  156. 970  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 970
  157. 980  IF Y$="Y" OR Y$="y" THEN COLOR 15,1 :PRINT "  YES" :GOTO 150
  158. 990  IF Y$="N" OR Y$="n" THEN COLOR 15,1 :PRINT "  NO " :GOTO 1000
  159. 1000  '------------------------------------------------ Enter Beam Spans & Loads
  160. 1005  PRINT
  161. 1010  J=0 :T=0
  162. 1020  GOSUB 8500       'To display heading and data
  163. 1030  INPUT "     ENTER  NUMBER OF SPANS OF THE BEAM        (1 TO 7)       ",N
  164. 1040  IF N>=1 AND N<=7 GOTO 1090
  165. 1050  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  166. 1060  INPUT "  ****     INVALID NUMBER OF SPANS       RE-ENTER    N      ****  ",N
  167. 1070  COLOR ,1:PRINT
  168. 1080  IF (N<1) OR (N>7) GOTO 8400
  169. 1090  PRINT
  170. 1092  IF NMBL1<NMB OR NMBL>NMB+N-1 THEN NMBL=NMB+N-1
  171. 1095  IF NMBL1>=NMB AND NMBL1<=NMB+N-1 THEN NMBL=NMBL1
  172. 1100  FOR I=1 TO N
  173. 1110  GOSUB 21100
  174. 1120  NEXT
  175. 1130  PRINT :PRINT
  176. 1140  PRINT "                 ***     Press   SPACE BAR   to continue    ***  ";
  177. 1150  Y$=INKEY$ :IF Y$<>" " THEN 1150
  178. 2400  '---------------------------------------------- Check Beam Spans & Loading
  179. 2410  FOR I=1 TO N
  180. 2420  GOSUB 8500       'To display heading and data
  181. 2430  PRINT
  182. 2440  PRINT "                    NUMBER OF SPANS   = "N :PRINT
  183. 2450  PRINT "             **  CHECKING  EACH SPAN LENGTH & LOADING  **"
  184. 2460  PRINT "             --------------------------------------------" :PRINT
  185. 2470  PRINT "     **  SPAN No."I"  :  B"NMB+I-1 TAB(33)"**  "
  186. 2480  PRINT "     -----------------------------"
  187. 2490  PRINT "     SPAN LENGTH       L ="L(I)" meter "
  188. 2500  PRINT "     UNIF. DIST. LOAD  W ="W(I)" ton/meter "
  189. 2502  PRINT
  190. 2505  IF J(I)<=0 GOTO 2575
  191. 2510  J=J(I)
  192. 2520  FOR J=1 TO J
  193. 2530  IF F(I,J)<=0 GOTO 2550
  194. 2540  PRINT "     COCENTRATED LOAD  F"J"="F(I,J)" ton    at "X(I,J)" meter   from left support "
  195. 2550  NEXT J
  196. 2560  J=J-1
  197. 2570  PRINT
  198. 2575  IF Z(I)<=0 GOTO 2645
  199. 2580  Z=Z(I)
  200. 2590  FOR Z=1 TO Z
  201. 2600  IF W3(I,Z)<=0 GOTO 2620
  202. 2610  PRINT "     UNIF. BLOCK LOAD  W"Z"="W3(I,Z)" t/m   at "A3(I,Z)"m from left support         For "B3(I,Z)"m length"
  203. 2620  NEXT Z
  204. 2630  Z=Z-1
  205. 2640  PRINT
  206. 2645  IF Q(I)<=0 GOTO 2730
  207. 2650  Q=Q(I)
  208. 2660  FOR Q=1 TO Q
  209. 2670  IF W5(I,Q)<=0 GOTO 2690
  210. 2680  PRINT "     TRIANGULAR LOAD   W"Q"="W5(I,Q)" t/m   at "A5(I,Q)"m from left support         For "B5(I,Q)"m length   With max. Load Intensity at"C5(I,Q)"m from left"
  211. 2690  NEXT Q
  212. 2700  Q=Q-1
  213. 2710  PRINT
  214. 2730  PRINT :LOCATE 24,8 :COLOR 0,7
  215. 2740  PRINT "   DO YOU WANT TO CHANGE THE ABOVE SHOWN DATA       (Y/N) ?   ";
  216. 2750  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 2750
  217. 2755  IF Y$="Y" OR Y$="y" THEN COLOR 15,1 :PRINT "  YES" :PRINT :GOSUB 21100 :GOTO 2420
  218. 2760  IF Y$="N" OR Y$="n" THEN COLOR 15,1 :PRINT "  NO "
  219. 2770  NEXT
  220. 2780  PRINT
  221. 2790  PRINT "          Beam Span Length & Loading Data  checking is COMPLETED " :PRINT
  222. 2792  PRINT "              ***     Press   SPACE BAR   to continue    ***  ";
  223. 2795  Y$=INKEY$ :IF Y$<>" " THEN 2795
  224. 2800  '------------------ ENTERING SUPPORT DIMENSION
  225. 2805  GOSUB 8500
  226. 2810  ON N GOSUB 17500,18000
  227. 2815  IF N>=3 THEN GOSUB 18500
  228. 2820  PRINT
  229. 2825  PRINT "          ENTER WIDTH OF EACH SUPPORT IN THE DIRECTION OF THE BEAM"
  230. 2830  PRINT "         ----------------------------------------------------------":PRINT
  231. 2835  FOR I= 1 TO N+1
  232. 2840  PRINT "            SUPPORT AT JOINT No. "I" t (cm) = ";
  233. 2845  INPUT BS(I):PRINT
  234. 2850  NEXT
  235. 2855  PRINT :LOCATE ,4 :COLOR 0,15
  236. 2858  PRINT "   DO YOU WANT TO CHANGE THE ABOVE SHOWN DATA              (Y/N) ?   ";
  237. 2860  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 2860
  238. 2862  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :COLOR 15,1 :GOTO 2800
  239. 2864  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :COLOR 15,1
  240. 2865  PRINT :PRINT :LOCATE ,4 :COLOR 0,15
  241. 2870  PRINT "   DO YOU WANT TO DESIGN FOR  Mu -ve  AT FACE OF SUPPORT   (Y/N) ?   ";
  242. 2875  DFS$=INKEY$ :IF DFS$<>"Y" AND DFS$<>"y" AND DFS$<>"N" AND DFS$<>"n" THEN 2875
  243. 2880  IF DFS$="Y" OR DFS$="y" THEN PRINT "  YES" :COLOR 15,1 :PRINT
  244. 2885  IF DFS$="N" OR DFS$="n" THEN PRINT "  NO " :COLOR 15,1 :PRINT
  245. 2890  CHAIN "CBFLEX",2900,ALL
  246. 5900  '-------------------------------------------------------End of Beam Design
  247. 5910  PRINT "     DO YOU HAVE OTHER BEAMS TO DESIGN              (Y/N) ?  ";
  248. 5920  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 5920
  249. 5930  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 10
  250. 5940  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :PRINT :PRINT "       [  YOU WILL BE SEND BACK TO THE  RCDESIGN  MAIN MENU   ]  " :CHAIN "RCDESIGN",2500
  251. 5990  END  '------------------------------------------------------End of Running
  252. 8400  '-------- SUBROUTINE ----------------------------- Display Invalid Entries
  253. 8410  PRINT :LOCATE ,6 :COLOR ,4 : BEEP
  254. 8420  PRINT "  ***  YOU WERE GIVEN TWO CHANCES TO ENTER , BUT YOU FAILED  ***  "TAB(72)"" :COLOR ,1
  255. 8430  PRINT :LOCATE ,6 :COLOR ,4
  256. 8440  PRINT "  ***  ENTER  Y  TO REDO THIS BEAM OR TO GO FOR OTHER BEAMS  ***  "TAB(72)"" :COLOR ,1
  257. 8450  PRINT
  258. 8460  GOTO 5900
  259. 8500   '------------------------------ SUBROUTINE : Display Heading & Basic Data
  260. 8510  CLS :LOCATE 2,3 :COLOR 15,5
  261. 8520  PRINT "  ****         CONTINUOUS BEAM DESIGN      *      B"NMB" -B"NMBL"       ****" TAB(78)""
  262. 8540  LOCATE ,3 :PRINT " MATERIAL PROPERTIES :   Conc. f'c ="FC"kg/cm2  *  Steel  fy ="FY"kg/cm2" TAB(78)""
  263. 8550  COLOR 15,1 :PRINT
  264. 8560  RETURN
  265. 17500  '-------------- SUBROUTINE : Display  Structural Analysis * ONE SPAN BEAM
  266. 17510  LT=LL+L(1)+LR
  267. 17520  XXL=CINT(LL/LT*38)
  268. 17530  XX1=CINT(L(1)/LT*38)
  269. 17540  XXR=CINT(LR/LT*38)
  270. 17550  XXT=XXL+XX1+XXR+2
  271. 17560  AA$=STRING$(XXT,196) :AB$=CHR$(221) :AC$=STRING$(XXT,205)
  272. 17570  ZA=36+CINT(XXL/2)-3
  273. 17580  ZB=36+XXL
  274. 17590  ZC=ZB+CINT(XX1/2)-2
  275. 17600  ZD=ZB+XX1+1
  276. 17610  ZE=ZD+CINT(XXR/2)-2
  277. 17620  COLOR 0,7
  278. 17630  PRINT "   JOINT NUMBER  ................"TAB(ZB)"1" TAB(ZD)"2" TAB(80) ""
  279. 17640  PRINT "   " TAB(36) AC$ TAB(80) ""
  280. 17650  PRINT "   SPAN  NUMBER  ................";
  281. 17660  IF LL<=0 GOTO 17680
  282. 17670  PRINT TAB(ZA)"L/C";
  283. 17680  PRINT TAB(ZB)AB$ TAB(ZC) "SPAN 1" TAB(ZD) AB$;
  284. 17690  IF LR<=0 GOTO 17710
  285. 17700  PRINT TAB(ZE) "R/C";
  286. 17710  PRINT TAB(80)""
  287. 17720  PRINT TAB(ZB) AB$ TAB(ZD) AB$ TAB(80)""
  288. 17730  COLOR 15,1
  289. 17750  RETURN
  290. 18000  '------- SUBROUTINE : Display  Spans and Joints Numbers * TWO SPANS BEAM
  291. 18010  LT=LL+L(1)+L(2)+LR
  292. 18020  XXL=CINT(LL/LT*50)
  293. 18030  XX1=CINT(L(1)/LT*50)
  294. 18040  XX2=CINT(L(2)/LT*50)
  295. 18050  XXR=CINT(LR/LT*50)
  296. 18060  XXT=XXL+XX1+XX2+XXR+3
  297. 18070  AA$=STRING$(XXT,196) :AB$=CHR$(221) :AC$=STRING$(XXT,205)
  298. 18080  ZA=23+CINT(XXL/2)-3
  299. 18090  ZB=23+XXL
  300. 18100  ZC=ZB+CINT(XX1/2)-2
  301. 18110  ZF=ZB+XX1+1
  302. 18120  ZG=ZF+CINT(XX2/2)-2
  303. 18130  ZD=ZF+XX2+1
  304. 18140  ZE=ZD+CINT(XXR/2)-2
  305. 18150  COLOR 0,7
  306. 18160  PRINT " JOINT NUMBER  ....."TAB(ZB)"1" TAB(ZF)"2" TAB(ZD)"3" TAB(80) ""
  307. 18170  PRINT "" TAB(23) AC$ TAB(80) ""
  308. 18180  PRINT " SPAN  NUMBER  .....";
  309. 18190  IF LL<=0 GOTO 18210
  310. 18200  PRINT TAB(ZA)"L/C";
  311. 18210  PRINT TAB(ZB)AB$ TAB(ZC) "SPAN 1" TAB(ZF)AB$ TAB(ZG) "SPAN 2" TAB(ZD)AB$;
  312. 18220  IF LR<=0 GOTO 18240
  313. 18230  PRINT TAB(ZE) "R/C";
  314. 18240  PRINT TAB(80)""
  315. 18250  PRINT TAB(ZB) AB$ TAB(ZF) AB$  TAB(ZD) AB$ TAB(80)""
  316. 18260  COLOR 15,1
  317. 18300  RETURN
  318. 18500  '-------- SUBROUTINE : Display  Spans and Joints Numbers * 3 - 7 SPANS
  319. 18510  IF N= 3 THEN XX1= 18 :XX= 55
  320. 18520  IF N= 4 THEN XX1= 14 :XX= 57
  321. 18530  IF N= 5 THEN XX1= 11 :XX= 56
  322. 18540  IF N= 6 THEN XX1= 9 :XX= 55
  323. 18550  IF N= 7 THEN XX1= 8 :XX= 57
  324. 18560  IF LL<=0 AND LR<=0 THEN XXT=XX :ZA= 15
  325. 18570  IF LL<=0 AND LR<>0 THEN XXT=XX+7 :ZA= 15
  326. 18580  IF LL<>0 AND LR<=0 THEN XXT=XX+7 :ZA= 8
  327. 18590  IF LL<>0 AND LR<>0 THEN XXT=XX+14 :ZA= 8
  328. 18600  AA$=STRING$(XXT,196) :AB$=CHR$(221) :AC$=STRING$(XXT,205)
  329. 18610  COLOR 0,7
  330. 18620  PRINT " JOINT ";
  331. 18630  FOR I= 1 TO N+1 :PRINT TAB(16+(I-1)*XX1-2) I; :NEXT :PRINT TAB(80) ""
  332. 18640  PRINT "" TAB(ZA) AC$ TAB(80) ""
  333. 18650  PRINT " SPAN No";
  334. 18660  IF LL<=0 GOTO 18680
  335. 18670  PRINT TAB(11)"L/C";
  336. 18680  FOR I= 1 TO N :PRINT TAB(16+(I-1)*XX1-1) AB$ TAB(16+I*XX1-INT(XX1/2)-4) "SPAN"I; :NEXT :PRINT TAB(16+XX-2) AB$;
  337. 18690  IF LR<=0 GOTO 18710
  338. 18700  PRINT TAB(16+XX-1) "R/C";
  339. 18710  PRINT TAB(80)""
  340. 18720  FOR I= 1 TO N+1 :PRINT TAB(16+(I-1)*XX1-1) AB$; :NEXT :PRINT TAB(80) ""
  341. 18730  COLOR 15,1
  342. 18800  RETURN
  343. 21100  '------------------------------ SUBROUTINE to enter span length & loading
  344. 21110  J(I)=0 :L(I)=0 :W(I)=0 :RL(I)=0 :RR(I)=0 :MFL(I)=0 :MFR(I)=0 :MNL(I)=0 :MNR(I)=0 :MP(I)=0
  345. 21120  FOR CLJ=1 TO 8 :F(I,CLJ)=0 :X(I,CLJ)=0 :NEXT CLJ
  346. 21150  PRINT "     **  SPAN No."I"  :  B"NMB+I-1 TAB(33)"**  "
  347. 21160  PRINT "     -----------------------------"
  348. 21170  INPUT "     ENTER  SPAN LENGTH                                L    (m)  ",L(I)
  349. 21180  IF L(I)>0 GOTO 21230
  350. 21190  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  351. 21200  INPUT "  ****     INVALID ZERO SPAN LENGTH      RE-ENTER     L     ****  ",L(I)
  352. 21210  COLOR ,1:PRINT
  353. 21220  IF L(I)<=0 GOTO 8400
  354. 21230  INPUT "     ENTER ULT. UNIFORMLY DISTRIBUTED LOAD INTENSITY   W  (t/m)  ",W(I)
  355. 21240  IF W(I)>0 GOTO 21290
  356. 21250  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  357. 21260  INPUT "  ****     INVALID  ZERO DISTRIB. LOAD   RE-ENTER     W     ****  ",W(I)
  358. 21270  COLOR ,1 :PRINT
  359. 21280  IF W(I)<=0 GOTO 8400
  360. 21290  RLS(I)=W(I)*L(I)/2
  361. 21300  RRS(I)=W(I)*L(I)/2
  362. 21310  MFL(I)=W(I)*L(I)^2/12
  363. 21320  MFR(I)=-W(I)*L(I)^2/12
  364. 21325  PRINT "    ------------------------------------------------------------------- " :PRINT
  365. 21330  J=0
  366. 21340  PRINT "     DO YOU HAVE CONCENTRATED LOADS ON THIS BEAM SPAN     (Y/N) ? ";
  367. 21350  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 21350
  368. 21352  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 21360
  369. 21354  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :GOTO 21580
  370. 21360  PRINT :LOCATE ,6 :COLOR 0,7
  371. 21370  PRINT " For more than one Concentrated Load , Enter successivly from left "TAB(75)""
  372. 21380  LOCATE ,6 :PRINT "                     to right according to start position distance " TAB(75)""
  373. 21390  COLOR 15,1 :PRINT
  374. 21400  INPUT "     ENTER CONCENTRATED LOAD VALUE                     F  (ton)   ",F(I,J+1)
  375. 21410  IF F(I,J+1)>0 GOTO 21450
  376. 21420  PRINT :LOCATE ,10 :COLOR ,4 :BEEP
  377. 21430  PRINT "  !! This load will be neglected !!  "
  378. 21440  COLOR ,1 :GOTO 21550
  379. 21450  INPUT "     ENTER POSITION OF LOAD FROM LEFT END               (meter)   ",X(I,J+1)
  380. 21460  IF X(I,J+1)<=L(I) GOTO 21500
  381. 21470  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  382. 21480  PRINT "   !! Error !!     Load position out of span      RE-ENTER  " TAB(70)""
  383. 21490  COLOR ,1 :LOCATE ,1 :PRINT :GOTO 21450
  384. 21500  J=J+1
  385. 21510  RLS(I)=RLS(I)+F(I,J)*(L(I)-X(I,J))/L(I)
  386. 21520  RRS(I)=RRS(I)+F(I,J)*X(I,J)/L(I)
  387. 21530  MFL(I)=MFL(I)+F(I,J)*X(I,J)*(L(I)-X(I,J))^2/L(I)^2
  388. 21540  MFR(I)=MFR(I)-F(I,J)*(L(I)-X(I,J))*X(I,J)^2/L(I)^2
  389. 21550  PRINT
  390. 21560  PRINT "     MORE CONCENTRATED LOADS                              (Y/N) ? ";
  391. 21570  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 21570
  392. 21572  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 21390
  393. 21574  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :GOTO 21580
  394. 21580  J(I)=J
  395. 21585  PRINT "    ------------------------------------------------------------------- " :PRINT
  396. 21590  Z=0
  397. 21600  PRINT "     DO YOU HAVE UNIFORM BLOCK LOADS  ON THIS BEAM SPAN   (Y/N) ? ";
  398. 21610  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 21610
  399. 21612  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 21620
  400. 21614  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :GOTO 21910
  401. 21620  PRINT :LOCATE ,6 :COLOR 0,7
  402. 21630  PRINT " For more than one Block Load , Enter successivly from left to right"TAB(75)""
  403. 21640  LOCATE ,6 :PRINT "                                according to start posit. distance " TAB(75)""
  404. 21650  COLOR 15,1 :PRINT
  405. 21660  INPUT "     ENTER LOAD INTENSITY                              W  (t/m)   ",W3(I,Z+1)
  406. 21670  IF W3(I,Z+1)>0 GOTO 21710
  407. 21680  PRINT :LOCATE ,10 :COLOR ,4 :BEEP
  408. 21690  PRINT "  !! This load will be neglected !!  "
  409. 21700  COLOR ,1 :GOTO 21880
  410. 21710  INPUT "     ENTER START POSIT. OF LOAD BLOCK FROM LEFT END     (meter)   ",A3(I,Z+1)
  411. 21720  IF A3(I,Z+1)<=L(I) GOTO 21760
  412. 21730  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  413. 21740  PRINT "   !! Error !!  Load start position out of span   RE-ENTER  " TAB(70)""
  414. 21750  COLOR ,1 :LOCATE ,1 :PRINT :GOTO 21710
  415. 21760  INPUT "     ENTER LENGTH OF LOAD BLOCK                         (meter)   ",B3(I,Z+1)
  416. 21770  IF B3(I,Z+1)<=L(I)-A3(I,Z+1) GOTO 21810
  417. 21780  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  418. 21790  PRINT "   !! Error !!  Load block out of span            RE-ENTER  " TAB(70)""
  419. 21800  COLOR ,1 :LOCATE ,1 :PRINT :GOTO 21760
  420. 21810  Z=Z+1
  421. 21820  RLS(I)=RLS(I)+(W3(I,Z)*B3(I,Z)*(L(I)-A3(I,Z)-B3(I,Z)/2))/L(I)
  422. 21830  RRS(I)=RRS(I)+(W3(I,Z)*B3(I,Z)*(A3(I,Z)+B3(I,Z)/2))/L(I)
  423. 21840  K1=(A3(I,Z)+B3(I,Z))/L(I)
  424. 21850  K2=A3(I,Z)/L(I)
  425. 21860  MFL(I)=MFL(I)+W3(I,Z)*L(I)^2*K1^2*(6-8*K1+3*K1^2)/12-W3(I,Z)*L(I)^2*K2^2*(6-8*K2+3*K2^2)/12
  426. 21870  MFR(I)=MFR(I)-(W3(I,Z)*L(I)^2*K1^3*(4-3*K1)/12-W3(I,Z)*L(I)^2*K2^3*(4-3*K2)/12)
  427. 21880  PRINT
  428. 21890  PRINT "     MORE UNIFORM BLOCK LOAD                              (Y/N) ? ";
  429. 21900  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 21900
  430. 21902  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 21650
  431. 21904  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :GOTO 21910
  432. 21910  Z(I)=Z
  433. 21915  PRINT "    ------------------------------------------------------------------- " :PRINT
  434. 21920  Q=0
  435. 21930  PRINT "     DO YOU HAVE TRIANGULAR LOADS  ON THIS BEAM SPAN      (Y/N) ? ";
  436. 21940  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 21940
  437. 21942  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 21950
  438. 21944  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :GOTO 22330
  439. 21950  PRINT :LOCATE ,6 :COLOR 0,7
  440. 21960  PRINT " For more than one Triangular Load , Enter successivly from left to "TAB(75)""
  441. 21970  LOCATE ,6 :PRINT "                          right according to start posit. distance " TAB(75)""
  442. 21980  COLOR 15,1 :PRINT
  443. 21990  INPUT "     ENTER MAXIMUM LOAD INTENSITY                      W  (t/m)   ",W5(I,Q+1)
  444. 22000  IF W5(I,Q+1)>0 GOTO 22040
  445. 22010  PRINT :LOCATE ,10 :COLOR ,4 :BEEP
  446. 22020  PRINT "  !! This load will be neglected  !!  "
  447. 22030  COLOR ,1 :GOTO 22300
  448. 22040  INPUT "     ENTER START POSITION OF TRIANGULER LOAD FROM LEFT END (meter)",A5(I,Q+1)
  449. 22050  IF A5(I,Q+1)<=L(I) GOTO 22090
  450. 22060  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  451. 22070  PRINT "   !! Error !!  Load start position out of span   RE-ENTER  " TAB(70)""
  452. 22080  COLOR ,1 :LOCATE ,1 :PRINT :GOTO 22040
  453. 22090  INPUT "     ENTER LENGTH OF TRIANGULER LOAD                       (meter)",B5(I,Q+1)
  454. 22100  IF B5(I,Q+1)<=L(I)-A5(I,Q+1) GOTO 22140
  455. 22110  PRINT :LOCATE ,6 :COLOR ,4 :BEEP
  456. 22120  PRINT "   !! Error !!  Load block out of span            RE-ENTER  " TAB(70)""
  457. 22130  COLOR ,1 :LOCATE ,1 :PRINT :GOTO 22090
  458. 22140  INPUT "     ENTER MAX. LOAD INTENSITY POSITION FROM LEFT END      (meter)",C5(I,Q+1)
  459. 22150  IF C5(I,Q+1)>=A5(I,Q+1) AND C5(I,Q+1)<=(A5(I,Q+1)+B5(I,Q+1)) GOTO 22190
  460. 22160  PRINT :LOCATE ,3 :COLOR ,4 :BEEP
  461. 22170  PRINT " !! Error !! Maximum load intensity position out of load triangle  RE-ENTER"
  462. 22180  COLOR ,1 :LOCATE ,1 :PRINT :GOTO 22140
  463. 22190  Q=Q+1
  464. 22200  RLS(I)=RLS(I)+(W5(I,Q)*(A5(I,Q)+B5(I,Q)-C5(I,Q))*0.5*(L(I)-C5(I,Q)-(A5(I,Q)+B5(I,Q)-C5(I,Q))/3))/L(I)+(W5(I,Q)*(C5(I,Q)-A5(I,Q))*0.5*(L(I)-C5(I,Q)+(C5(I,Q)-A5(I,Q))/3))/L(I)
  465. 22210  RRS(I)=RRS(I)+(W5(I,Q)*(A5(I,Q)+B5(I,Q)-C5(I,Q))*0.5*(C5(I,Q)+(A5(I,Q)+B5(I,Q)-C5(I,Q))/3))/L(I)+(W5(I,Q)*(C5(I,Q)-A5(I,Q))*0.5*(C5(I,Q)-(C5(I,Q)-A5(I,Q))/3))/L(I)
  466. 22220  K1=(A5(I,Q)+B5(I,Q))/L(I)
  467. 22230  K2=C5(I,Q)/L(I)
  468. 22240  K3=(L(I)-A5(I,Q))/L(I)
  469. 22250  K4=(L(I)-C5(I,Q))/L(I)
  470. 22260  IF C5(I,Q)=A5(I,Q)+B5(I,Q) THEN WL5=0 :GOTO 22270 ELSE WL5=W5(I,Q)*(A5(I,Q)+B5(I,Q))/(A5(I,Q)+B5(I,Q)-C5(I,Q))
  471. 22270  IF C5(I,Q)=A5(I,Q) THEN WR5=0 :GOTO 22280 ELSE WR5=W5(I,Q)*(L(I)-A5(I,Q))/(C5(I,Q)-A5(I,Q))
  472. 22280  MFL1=WL5*L(I)^2*K1^2*(10-10*K1+3*K1^2)/60-((WL5-W5(I,Q))*L(I)^2*K2^2*(10-10*K2+3*K2^2)/60)-(W5(I,Q)*L(I)^2*K2^2*(6-8*K2+3*K2^2)/12)
  473. 22282  MFL2=WR5*L(I)^2*K3^3*(5-3*K3)/60-((WR5-W5(I,Q))*L(I)^2*K4^3*(5-3*K4)/60)-(W5(I,Q)*L(I)^2*K4^3*(4-3*K4)/12)
  474. 22285  MFR1=WL5*L(I)^2*K1^3*(5-3*K1)/60-((WL5-W5(I,Q))*L(I)^2*K2^3*(5-3*K2)/60)-(W5(I,Q)*L(I)^2*K2^3*(4-3*K2)/12)
  475. 22288  MFR2=WR5*L(I)^2*K3^2*(10-10*K3+3*K3^2)/60-((WR5-W5(I,Q))*L(I)^2*K4^2*(10-10*K4+3*K4^2)/60)-(W5(I,Q)*L(I)^2*K4^2*(6-8*K4+3*K4^2)/12)
  476. 22290  IF C5(I,Q)=A5(I,Q) THEN MFL(I)=MFL(I)+MFL1 :MFR(I)=MFR(I)-MFR1 :GOTO 22300
  477. 22292  IF C5(I,Q)=A5(I,Q)+B5(I,Q) THEN MFL(I)=MFL(I)+MFL2 :MFR(I)=MFR(I)-MFR2 :GOTO 22300
  478. 22295  IF C5(I,Q)>A5(I,Q) AND C5(I,Q)<(A5(I,Q)+B5(I,Q)) THEN MFL(I)=MFL(I)+MFL1+MFL2 :MFR(I)=MFR(I)-MFR1-MFR2
  479. 22300  PRINT
  480. 22310  PRINT "     MORE PARTIAL TRIANGULER LOADS                        (Y/N) ? ";
  481. 22320  Y$=INKEY$ :IF Y$<>"Y" AND Y$<>"y" AND Y$<>"N" AND Y$<>"n" THEN 22320
  482. 22322  IF Y$="Y" OR Y$="y" THEN PRINT "  YES" :GOTO 21980
  483. 22324  IF Y$="N" OR Y$="n" THEN PRINT "  NO " :GOTO 22330
  484. 22330  Q(I)=Q
  485. 22335  PRINT "    ------------------------------------------------------------------- " :PRINT
  486. 22340  RETURN
  487.